PrintJob.addPage()

Доступность

Flash Player 7.

Синтаксис

my_pj.addPage(target:Object [, printArea:Object] [, options:Object ] [, frameNumber:Number]) : Boolean

Параметры

target Может быть числом или строкой; номер уровня или мувиклип, который должен быть напечатан. Передав число Вы укажите номер уровня (например, 0 соответствует _root), а строку (в кавычках, [""]) — имя мувиклипа.

printArea  Необязательный параметр, определяющий печатную зону в следующем виде:

{xMin:topLeft, xMax:topRight, yMin:bottomLeft, yMax:bottomRight}

Координаты, переданные параметру printArea, считаются относительно точки регистрации уровня или мувиклипа target. Указать необходимо все 4 координаты. Ширина (xMax-xMin) и высота (yMax-yMin) должны быть больше 0.

Стандартной единицей изменения для печати является пункт (point), в то время как для экрана такой величиной является пиксел (pixel); пункт — постоянная физическая величина, равная 1/72 дюйма, а размер пиксела зависит от разрешения экрана. Для перевода пунктов, дюймов и сантиметров в твипы (twips) или пункты (твип равен 1/20 пункта) пользуйтесь следующими выражениями:

Точно перевести пункты в пикселы невозможно; коэффициент преобразования зависит от разрешения монитора. Лишь если у монитора установлена разрешающая способность, равная 72 пикселам на дюйм, один пиксел соответствует одному дюйму.

Замечание: если ранее Вы пользовались для печати из Flash функциями print(), printAsBitmap(), printAsBitmapNum() или printNum(), Вы, возможно, пользовались пометкой кадра ярлыком #b для указания печатной зоны. При использовании метода addPage() для задания печатной области должен использоваться параметр printArea; метки кадров #b игнорируются.

Если параметр printArea опущен или передано некорректное значение, печатается вся област Сцены клипа или уровня target. Если Вы не хотите указывать значение параметра printArea, но хотите передать значение параметру options или frameNumber, передайте параметру printArea значение null.

options Необязательный параметр, определяющий, как векторное или растровое изображение будет напечатан указанный мувиклип или уровень. Формат такой:

{printAsBitmap:Boolean}

Значением по умолчанию является false, означающий, что печать будет происходить в векторном режиме. Для того, чтобы напечатать target как растровое изображение, передайте параметру printAsBitmap значение true. Помните о следующих рекомендациях, принимая решение, какой вариант предпочесть:

Если параметр options опущен или значение некорректно, используется векторный режим печати. Если Вы хотите опустить параметр options, но хотели бы передать значение frameNumber, передайте параметру options значение null.

frameNumber Необязательный параметр, позволяющий указать номер печатаемого кадра; указание кадра frameNumber не вызывает исполнения кода в указанном кадре. Если этот параметр опущен, печатается текущий кадр мувиклипа target.

Замечание: если ранее Вы пользовались для печати из Flash функциями print(), printAsBitmap(), printAsBitmapNum() или printNum(), Вы, возможно, пользовались пометкой кадра ярлыком #b для указания печатной зоны. При печати при помощи PrintJob.addPage() нескольких кадров, Вы должны добавить каждый кадр в список при помощи PrintJob.addPage(); метки кадров #p игнорируются. Как добиться этого программным путем показано в примере ниже.

Возвращает

Булева величина: true, если страница была успешно отправлена программе-спулеру; в противном случае false.

Описание

Метод; отправляет указанный уровень или мувиклип как единую страницу программе-спулеру (планировщику печати). Перед тем, как воспользоваться этим методом Вы должны вызвать PrintJob.start(); после вызова PrintJob.addPage() один или множество раз, необходимо вызвать PrintJob.send() для отправки страниц в списке спулера на печать.

Если данным методом возвращается false (например, если Вы не вызвали ранее PrintJob.start() или пользователь отменил печать), все последующие вызовы PrintJob.addPage() не сработают. Однако, если предыдущие вызовы PrintJob.addPage() прошли удачно, вызов метода PrintJob.send() отправит страницы, занесенные в список спулера, на печать.

Если Вы передали значение параметру printArea, xMin и yMin соответствуют верхнему левому углу (точке с координатами 0,0) печатной области страницы. Печатная область описывается свойствами pageHeight и pageWidth (доступными только для чтения), определяемыми при вызове PrintJob.start(). Так как отпечаток выравнивается по левому верхнему углу печатной области, в случае с рисунком, большим, чем печатная область, он обрезается сверху и/или снизу. То же самое происходит, если печатная область не определялась.

Для более подробной информации смотри "Определение печатной зоны (при использовании объекта PrintJob)" в Использовании Flash.

Если Вы хотите изменить размеры мувиклипа перед печатью, используйте для этого свойства MovieClip._xscale и MovieClip._yscale, возвращая к начальным значениям после печати. Маштаб мувиклипа не оказывает никакого влияния на печатную область printArea. Таким образом, если Вы указали, что печатаете область 50 x 50 пикселей, напечатаны будут ровно 2500. Если же при этом мувиклип был отмаштабирован, эти 2500 все равно будут напечатаны, хоть мувиклип и будет напечатан отмаштабированным.

При печати из Flash Player поддерживаются как PostScript, так и не-PostScript принтеры. Не-PostScript принтеры конвертируют векторную графику в растровую.

Пример

Ниже показывается несколько примеров использования addPage():

my_btn.onRelease = function()
{
  var pageCount:Number = 0;

  var my_pj:PrintJob = new PrintJob();
  
  if (my_pj.start())
  {
    // Печатаем весь кадр _root в векторном режиме
    if (my_pj.addPage(0)){
      pageCount++;

        // Беря за отсчет точку 0,0, печатаем область в 400 в ширину и 500 в высоту.
        // Берем текущий кадра мувиклипа _root и используем векторный режим печати
      if (my_pj.addPage(0, {xMin:0,xMax:400,yMin:0,yMax:500})){
        pageCount++;

        // Беря за отсчет точку 0,0, печатаем область в 400 в ширину и 500 в высоту.
        // Берем 1й кадра мувиклипа _root и используем растровый режим печати
        if (my_pj.addPage(0, {xMin:0,xMax:400,yMin:0,yMax:500},
            {printAsBitmap:true}, 1)){
          pageCount++;

          // Начиная на 50 пикселов правее точки 0,0 и на 70 пикселов ниже ее,
          // печатаем зону 500 на 600 пикселов четвертого кадра 5го уровня в векторном режиме
          if (my_pj.addPage(5, {xMin:50,xMax:550,yMin:70,yMax:670},null, 4)){
            pageCount++;

             // Беря за отсчет точку 0,0, печатаем область в 400 в ширину и 400 в высоту.
       		 // Берем 3й кадра мувиклипа dance_mc и используем растровый режим печати
            if (my_pj.addPage("dance_mc",
                {xMin:0,xMax:400,yMin:0,yMax:400},{printAsBitmap:true}, 3)){
              pageCount++;

             // Беря за отсчет точку 0,0, печатаем область в 400 в ширину и 600 в высоту.
       		 // Берем 3й кадра мувиклипа dance_mc и используем векторный режим печати,
			 // предварительно уменьшив маштабирование мувиклипа вдвое.
              var x:Number = dance_mc._xscale;
              var y:Number = dance_mc._yscale;
              dance_mc._xscale = 50;
              dance_mc._yscale = 50;

              if (my_pj.addPage("dance_mc",
                  {xMin:0,xMax:400,yMin:0,yMax:600},null, 3)){
                pageCount++;
              }
              dance_mc._xscale = x;
              dance_mc._yscale = y;
            }
          }
        }
      }
    }
  }
  
  // Если хотя бы один вызов addPage() прошел удачно, печатаем страницы.
  if (pageCount > 0){
    my_pj.send();
  }
  delete my_pj;
}

См. также

PrintJob.send(), PrintJob.start()